home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / progwin.zip / POORMENU.ZIP / POORMENU.C < prev    next >
Text File  |  1991-10-28  |  2KB  |  93 lines

  1. /*----------------------------------------
  2.   POORMENU.C -- The Poor Person's Menu
  3.         (C) Charles Petzold, 1990
  4.   ------------------------------------------*/
  5.  
  6. #include <windows.h>
  7.  
  8. #define IDM_ABOUT    1
  9. #define IDM_HELP    2
  10. #define IDM_REMOVE    3
  11.  
  12. long FAR PASCAL WndProc (HWND, WORD, WORD, LONG);
  13.  
  14. static char szAppName [] = "PoorMenu";
  15.  
  16. int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance,
  17.                 LPSTR lpszCmdLine, int nCmdShow)
  18.     {
  19.     HMENU        hMenu;
  20.     HWND        hwnd;
  21.     MSG        msg;
  22.     WNDCLASS    wndclass;
  23.  
  24.     if (!hPrevInstance)
  25.          {
  26.          wndclass.style        = CS_HREDRAW | CS_VREDRAW;
  27.          wndclass.lpfnWndProc   = WndProc;
  28.          wndclass.cbClsExtra    = 0;
  29.          wndclass.cbWndExtra    = 0;
  30.          wndclass.hInstance        = hInstance;
  31.          wndclass.hIcon        = LoadIcon (NULL, IDI_APPLICATION);
  32.          wndclass.hCursor        = LoadCursor (NULL, IDC_ARROW);
  33.          wndclass.hbrBackground = GetStockObject (WHITE_BRUSH);
  34.          wndclass.lpszMenuName  = NULL;
  35.          wndclass.lpszClassName = szAppName;
  36.  
  37.          RegisterClass (&wndclass);
  38.         }
  39.  
  40.     hwnd = CreateWindow (szAppName,  "The Poor Person's Menu",
  41.                          WS_OVERLAPPEDWINDOW,
  42.                          CW_USEDEFAULT, CW_USEDEFAULT,
  43.                          CW_USEDEFAULT, CW_USEDEFAULT,
  44.                          NULL, NULL, hInstance, NULL);
  45.  
  46.      hMenu = GetSystemMenu (hwnd, FALSE);
  47.  
  48.       AppendMenu (hMenu, MF_SEPARATOR, 0,     NULL);
  49.       AppendMenu (hMenu, MF_STRING,    IDM_ABOUT, "About...");
  50.       AppendMenu (hMenu, MF_STRING,       IDM_HELP, "Help...");
  51.     AppendMenu (hMenu, MF_STRING,       IDM_REMOVE, "Remove Additions");
  52.  
  53.     ShowWindow (hwnd, nCmdShow);
  54.     UpdateWindow (hwnd);
  55.  
  56.     while (GetMessage (&msg, NULL, 0, 0))
  57.         {
  58.         TranslateMessage (&msg);
  59.         DispatchMessage (&msg);
  60.         }
  61.     return msg.wParam;
  62.     }
  63.  
  64. long FAR PASCAL WndProc (HWND hwnd, WORD message, WORD wParam, LONG lParam)
  65.     {
  66.     switch (message)
  67.         {
  68.         case WM_SYSCOMMAND:
  69.             switch (wParam)
  70.                 {
  71.                 case IDM_ABOUT:
  72.                     MessageBox (hwnd, "The Poor Person's Menu Program.",
  73.                             szAppName, MB_OK | MB_ICONEXCLAMATION);
  74.                     return 0;
  75.  
  76.                 case IDM_HELP:
  77.                     MessageBox (hwnd, "Help not yet implemented.",
  78.                             szAppName, MB_OK | MB_ICONEXCLAMATION);
  79.                     return 0;
  80.  
  81.                 case IDM_REMOVE:
  82.                     GetSystemMenu (hwnd, TRUE);
  83.                     return 0;
  84.                 }
  85.             break;
  86.  
  87.         case WM_DESTROY:
  88.             PostQuitMessage (0);
  89.             return 0;
  90.         }
  91.     return DefWindowProc (hwnd, message, wParam, lParam);
  92.     }
  93.